<?php

namespace app\common\model\Subject;

use think\Model;

// 引入软删除模型
use traits\model\SoftDelete;

/**
 * 课程表
 */
class Subject extends Model
{

    // 在模型内容引用软删除
    use SoftDelete;

    // 获取表名
    protected $name = 'subject';

    //指定一个自动设置的时间字段
    //开启自动写入
    protected $autoWriteTimestamp = true;

    //设置字段的名字
    protected $createTime = "createtime"; //插入的时候设置的字段名

    //禁止 写入的时间字段
    protected $updateTime = false;

    // 设置软删除的字段更新的时间字段
    protected $deleteTime = 'deletetime';

    // 配置获取器
    protected $append = [
        'thumbs_text',
        'createtime_text',
        'likes_text'
    ];

    // 图片获取器方法
    public function getThumbsTextAttr($value, $data)
    {
        $thumbs = isset($data['thumbs']) ? $data['thumbs'] : '';

        // 如果为空就给一个默认图片地址
        if (empty($thumbs) || !is_file("." . $thumbs)) {
            $thumbs = "/assets/home/images/video.jpg";
        }

        return $thumbs;
    }

    // 时间获取器方法
    public function getCreateTimeTextAttr($value, $data)
    {
        // 获取时间
        $createtime = isset($data['createtime']) ? trim($data['createtime']) : '';

        // 判断是否为空，不为空就转换为时间戳
        if (empty($createtime)) {
            return '';
        }
        return date('Y-m-d H-i', $createtime);
    }

    // 点赞获取器方法
    public function getLikesTextAttr($value, $data)
    {
        // 获取点赞
        $likes = isset($data['likes']) ? trim($data['likes']) : '';

        // 判断是否为空，不为空就转换为数据，然后统计出长度，就是点赞人的人数
        if (empty($likes)) {
            return 0;
        }

        // 将字符串转换为数据
        $arr = explode(',', $likes);

        // 返回长度
        return count($arr);
    }

    // 关联查询方法，查询分类
    // 因为要在搜索页面中，拿到课程的分类，但是此时的表是课程，所以要链表到课程分类表
    public function category()
    {
        // subject.cateid = category.id  (课程.课程分类id = 课程分类.id)
        // $this->belongsTo(关联外键模型,外键字段,关联表的主键,废弃参数,链表方式);
        // setEagerlyType(0)  采用join的方式来做查询
        return $this->belongsTo('app\common\model\Subject\Category', 'cateid', 'id', [], 'LEFT')->setEagerlyType(0);
    }
}
